In [1]:
%matplotlib inline
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

In [2]:
df = pd.read_csv('red_led.csv')

In [8]:
plt.plot(df.x_scaled, df.y_scaled)
plt.xlabel('Volts [V]')
plt.ylabel('Current [mA]')
plt.xlim(1.6, 1.85)
plt.ylim(-2.6, 0.1)


Out[8]:
(-2.6, 0.1)

In [15]:
plt.plot(df.x_scaled, 1000*df.y_scaled, 'b.')
plt.xlabel('Volts [V]')
plt.ylabel(u'Current [µA]')
plt.xlim(0.5, 1)
plt.ylim(-30, 30)


Out[15]:
(-30, 30)

Tiny offset from zero here, but overall it looks pretty good.


In [21]:
np.std(df.y_scaled[np.logical_and(df.x_scaled < 1, df.x_scaled > 0.5)], ddof=1)*1000


Out[21]:
4.3842939618464802

With default analogRead settings, 12-bit resolution, we see 4 µA measured current noise on 10 mA full scale, with no effort to reduce the bandwidth of any of the components.


In [25]:
(4./10000)**-1


Out[25]:
2500.0